package com.woniu.util;

import com.nimbusds.jose.*;
import com.nimbusds.jose.crypto.MACSigner;

import java.util.HashMap;

public class JWTTest {
    public static void main(String[] args) throws JOSEException {
        //创建jwt
        //1:创建头部
        //加密方式算法
        //可逆，不可逆，对称（只有一个密钥），非对称（有一个密钥一个公钥）
        JWSHeader header = new JWSHeader.Builder(JWSAlgorithm.HS256)   //HS256是对称加密
                .type(JOSEObjectType.JWT).build();
        System.out.println(header.toBase64URL());//打印出来密钥
        //2:创建载荷
        HashMap<String, Object> h = new HashMap<>();
        h.put("id",1);
        h.put("username","laoma");
        Payload payload = new Payload(h);
        System.out.println(payload.toBase64URL());

        //3:创建签名 = 加密(头部+载荷+密钥)
        JWSObject jwsObject = new JWSObject(header,payload);
        String secretKey = "问渠哪得清如许，唯有源头活水来";//密钥
        JWSSigner jwsSigner = new MACSigner(secretKey);//内写密钥
        jwsObject.sign(jwsSigner); //加密方式

        String jwt = jwsObject.serialize(); //生成jwt
        System.out.println(jwt);
    }

}
